package org.liangsy.common.utils;

import org.springframework.beans.BeanUtils;
import org.springframework.beans.BeanWrapper;
import org.springframework.beans.BeanWrapperImpl;

import java.util.Date;

/**
 * @author Administrator
 */
public class MyBeanUtils extends BeanUtils {

    public static void initNullPropertyNames(Object source) {
        final BeanWrapper src = new BeanWrapperImpl(source);
        java.beans.PropertyDescriptor[] pds = src.getPropertyDescriptors();
        for (java.beans.PropertyDescriptor pd : pds) {
            Object srcValue = src.getPropertyValue(pd.getName());
            Class<?> type = src.getPropertyType(pd.getName());
            if (srcValue == null) {
                if (type.isAssignableFrom(String.class)) {
                    src.setPropertyValue(pd.getName(), "");
                } else if (type.isAssignableFrom(Integer.class)) {
                    src.setPropertyValue(pd.getName(), 0);
                } else if (type.isAssignableFrom(Short.class)) {
                    src.setPropertyValue(pd.getName(), 0);
                } else if (type.isAssignableFrom(Double.class)) {
                    src.setPropertyValue(pd.getName(), 0d);
                } else if (type.isAssignableFrom(Long.class)) {
                    src.setPropertyValue(pd.getName(), 0L);
                } else if (type.isAssignableFrom(Byte.class)) {
                    src.setPropertyValue(pd.getName(), 1);
                } else if (type.isAssignableFrom(java.util.Date.class) || type.isAssignableFrom(java.sql.Date.class)) {
                    src.setPropertyValue(pd.getName(), new Date());
                }
            }
        }

    }}
